package org.miyuki4j.cfgtool.confbean.person;


@org.miyuki4j.cfgtool.TableClassAnno
abstract class __SPersonAttr__ extends org.miyuki4j.cfgtool.AbstractConf<Integer> {

    /**
     * 模版ID
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 0, name = "id", type = "int")
    private Integer id = 0;

    /**
     * 人物名称
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 1, name = "name", type = "string")
    private String name = "";

    /**
     * 人物类型
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 2, name = "type", type = "int")
    private Integer type = 0;

    /**
     * 人物标签
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 3, name = "tags", type = "list<string>", delimiters = "|")
    private java.util.List<String> tags = new java.util.ArrayList<>();

    /**
     * 人物属性
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 4, name = "props", type = "map<string,string>", delimiters = "|:")
    private java.util.Map<String, String> props = new java.util.HashMap<>();

    /**
     * 战力
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 5, name = "power", type = "long")
    private Long power = 0L;

    /**
     * 维度
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 6, name = "lat", type = "double")
    private Double lat = .0D;

    /**
     * 经度
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 7, name = "lng", type = "double")
    private Double lng = .0D;

    /**
     * 好友id集合
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 8, name = "friends", type = "set<int>", delimiters = ",")
    private java.util.Set<Integer> friends = new java.util.HashSet<>();

    /**
     * 登录奖励
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 9, name = "loginAwards", type = "list<reward>", delimiters = "|,")
    private java.util.List<org.miyuki4j.cfgtool.Reward> loginAwards = new java.util.ArrayList<>();

    /**
     * 隐藏福利大奖
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 10, name = "bigAward", type = "reward", delimiters = ",")
    private org.miyuki4j.cfgtool.Reward bigAward = null;

    /**
     * 额外信息
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 11, name = "extra", type = "list2<string>", delimiters = "|,")
    private java.util.List<java.util.List<String>> extra = new java.util.ArrayList<>();

    /**
     * 出生日期
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 12, name = "birthday", type = "date", delimiters = "yyyy-MM-dd HH:mm:ss")
    private java.time.LocalDateTime birthday = null;

    /**
     * 是否已婚
     */
    @org.miyuki4j.cfgtool.TableFieldAnno(index = 13, name = "married", type = "bool")
    private Boolean married = false;

    public __SPersonAttr__() {

    }

    public Integer getId() {
        return this.id;
    }

    public __SPersonAttr__ setId(Integer id) {
        this.id = id;
        return this;
    }

    public String getName() {
        return this.name;
    }

    public __SPersonAttr__ setName(String name) {
        this.name = name;
        return this;
    }

    public Integer getType() {
        return this.type;
    }

    public __SPersonAttr__ setType(Integer type) {
        this.type = type;
        return this;
    }

    public java.util.List<String> getTags() {
        return this.tags;
    }

    public __SPersonAttr__ setTags(java.util.List<String> tags) {
        this.tags = tags;
        return this;
    }

    public java.util.Map<String, String> getProps() {
        return this.props;
    }

    public __SPersonAttr__ setProps(java.util.Map<String, String> props) {
        this.props = props;
        return this;
    }

    public Long getPower() {
        return this.power;
    }

    public __SPersonAttr__ setPower(Long power) {
        this.power = power;
        return this;
    }

    public Double getLat() {
        return this.lat;
    }

    public __SPersonAttr__ setLat(Double lat) {
        this.lat = lat;
        return this;
    }

    public Double getLng() {
        return this.lng;
    }

    public __SPersonAttr__ setLng(Double lng) {
        this.lng = lng;
        return this;
    }

    public java.util.Set<Integer> getFriends() {
        return this.friends;
    }

    public __SPersonAttr__ setFriends(java.util.Set<Integer> friends) {
        this.friends = friends;
        return this;
    }

    public java.util.List<org.miyuki4j.cfgtool.Reward> getLoginAwards() {
        return this.loginAwards;
    }

    public __SPersonAttr__ setLoginAwards(java.util.List<org.miyuki4j.cfgtool.Reward> loginAwards) {
        this.loginAwards = loginAwards;
        return this;
    }

    public org.miyuki4j.cfgtool.Reward getBigAward() {
        return this.bigAward;
    }

    public __SPersonAttr__ setBigAward(org.miyuki4j.cfgtool.Reward bigAward) {
        this.bigAward = bigAward;
        return this;
    }

    public java.util.List<java.util.List<String>> getExtra() {
        return this.extra;
    }

    public __SPersonAttr__ setExtra(java.util.List<java.util.List<String>> extra) {
        this.extra = extra;
        return this;
    }

    public java.time.LocalDateTime getBirthday() {
        return this.birthday;
    }

    public __SPersonAttr__ setBirthday(java.time.LocalDateTime birthday) {
        this.birthday = birthday;
        return this;
    }

    public Boolean getMarried() {
        return this.married;
    }

    public __SPersonAttr__ setMarried(Boolean married) {
        this.married = married;
        return this;
    }

    public String toString() {
        return "__SPersonAttr__ {\n" +
            "    id = " + id + "\n" +
            "    name = " + name + "\n" +
            "    type = " + type + "\n" +
            "    tags = " + tags + "\n" +
            "    props = " + props + "\n" +
            "    power = " + power + "\n" +
            "    lat = " + lat + "\n" +
            "    lng = " + lng + "\n" +
            "    friends = " + friends + "\n" +
            "    loginAwards = " + loginAwards + "\n" +
            "    bigAward = " + bigAward + "\n" +
            "    extra = " + extra + "\n" +
            "    birthday = " + birthday + "\n" +
            "    married = " + married + "\n" +
            "}";
    }

    @Override
    public int hashCode() {
        int result = 0;
        result = 31 * result + id.hashCode();
        result = 31 * result + name.hashCode();
        result = 31 * result + type.hashCode();
        result = 31 * result + tags.hashCode();
        result = 31 * result + props.hashCode();
        result = 31 * result + power.hashCode();
        result = 31 * result + lat.hashCode();
        result = 31 * result + lng.hashCode();
        result = 31 * result + friends.hashCode();
        result = 31 * result + loginAwards.hashCode();
        result = 31 * result + bigAward.hashCode();
        result = 31 * result + extra.hashCode();
        result = 31 * result + birthday.hashCode();
        result = 31 * result + married.hashCode();
        return result;
    }

    @Override
    public boolean equals(Object o) {
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        __SPersonAttr__ that = (__SPersonAttr__) o;
        if (!java.util.Objects.equals(id, that.id)) {
            return false;
        }
        if (!java.util.Objects.equals(name, that.name)) {
            return false;
        }
        if (!java.util.Objects.equals(type, that.type)) {
            return false;
        }
        if (!java.util.Objects.equals(tags, that.tags)) {
            return false;
        }
        if (!java.util.Objects.equals(props, that.props)) {
            return false;
        }
        if (!java.util.Objects.equals(power, that.power)) {
            return false;
        }
        if (!java.util.Objects.equals(lat, that.lat)) {
            return false;
        }
        if (!java.util.Objects.equals(lng, that.lng)) {
            return false;
        }
        if (!java.util.Objects.equals(friends, that.friends)) {
            return false;
        }
        if (!java.util.Objects.equals(loginAwards, that.loginAwards)) {
            return false;
        }
        if (!java.util.Objects.equals(bigAward, that.bigAward)) {
            return false;
        }
        if (!java.util.Objects.equals(extra, that.extra)) {
            return false;
        }
        if (!java.util.Objects.equals(birthday, that.birthday)) {
            return false;
        }
        if (!java.util.Objects.equals(married, that.married)) {
            return false;
        }
        return true;
    }

}
